60 HOME : VTAB 4: PRINT " PLEASE TYPE THE EXACT FILE NAME OF": PRINT : PRINT " SHAPE TABLE TO BE LOADED FROM DISK": POKE 32,9: PRINT : PRINT "( BUT NOT THE '.SG' )"
65 VTAB 11: INPUT N$:N$ = N$ +".SG"
70 PRINT D$;"BLOAD ";N$;",A$4000"
75 N = ( PEEK(TA +2) +256 * PEEK(TA +3) -4)/2
80 SN = PEEK(TA)
85 L = PEEK(TA +2 +2 *SN) +256 * PEEK(TA +3 +2 *SN):F = TA +L -1
585 HOME : VTAB 22: PRINT "SHAPE TO REMAIN UNCHANGED? <Y/N> ";: GET A$
590 IF A$ = "Y" THEN 200
595 IF A$ = "N" THEN PRINT : VTAB 24: PRINT "EDIT FROM START <RETURN> OR END <U> ?";: GET M$
600 IF M$ = CHR$(13) THEN 510
605 IF M$ = "U" THEN HOME : GOTO 560
610 GOTO 595
615 X = XO:Y = YO
620 FOR I = 23456 TO SA -1:M = PEEK(I): IF M >3 THEN DRAW 2 AT X,Y:M = M -4
625 GOSUB 2065:SA = SA -1: NEXT I
630 E = 0: HCOLOR= 0: DRAW 2 AT X,Y: HCOLOR= 3: HOME : GOSUB 1930: GOSUB 1735: GOTO 2100
700 HOME : TEXT : POKE 32,7
705 VTAB 6: PRINT "COPY FROM THIS TABLE <Y/N> ?";: GET A$: IF A$ < >"Y" THEN 800
710 VTAB 9: PRINT : PRINT "SHAPE # TO BE COPIED";: HTAB 23: INPUT SN: IF SN <1 OR SN > PEEK(TA) THEN 710
715 PRINT : PRINT "SEE SHAPE BEFORE COPYING ?";: GET A$: IF A$ < >"N" THEN GOSUB 2000: POKE 32,0: VTAB 22: HTAB 5: PRINT "IS THIS THE SHAPE TO BE COPIED ?";: GET A$: IF A$ = "N" THEN 700
720 TE = TA
725 S = TE +2 *SN:SL = PEEK(S):SH = 64 -E + PEEK(S +1):RL = PEEK(S +2) -1:RH = 64 -E + PEEK(S +3): IF RL <0 THEN RL = 255:RH = RH -1
730 D = TA +2 * PEEK(TA) +2:DL = PEEK(D):DH = 64 + PEEK(D +1)
745 IF DL >255 THEN DL = DL -256:DH = DH +1: GOTO 745
750 POKE D +2,DL: POKE D +3,DH:L = L +LS: POKE TA,( PEEK(TA) +1)
755 HOME : TEXT : VTAB 4: HTAB 8: PRINT "COPY ANOTHER <Y/N> ?";: GET A$: IF A$ = "Y" THEN 710
760 GOTO 200
800 HOME : POKE 32,7: VTAB 4: PRINT "ENTER NAME OF OTHER TABLE?": PRINT " (MUST HAVE THE '.SG'": PRINT " BUT DON'T TYPE IT)": PRINT : PRINT : INPUT NO$:NO$ = NO$ +".SG"
815 VTAB 15: PRINT "SHAPE # TO BE COPIED";: HTAB 23: INPUT SN: IF SN <1 OR SN > PEEK(TE) THEN 815
820 PRINT : PRINT "SEE SHAPE BEFORE COPYING ?";: GET A$: IF A$ = "N" THEN 835
825 TA = TE: GOSUB 2000: POKE 32,0: VTAB 22: HTAB 5: PRINT "IS THIS THE SHAPE TO BE COPIED ?";: GET A$: IF A$ = "N" THEN HOME : TEXT : GOTO 815
830 TA = 16384
835 E = 56: GOTO 725
900 HOME : VTAB 4: HTAB 17: FLASH : PRINT " WARNING ": NORMAL : PRINT : PRINT "IF YOU MOVE ANY SHAPE, ALL OTHER SHAPES": PRINT : PRINT "BETWEEN THE OLD AND NEW POSITIONS, WILL"
905 PRINT : PRINT "BE RENUMBERED. PROGRAMS USING THEM MUST": PRINT : HTAB 8: PRINT "BE ADJUSTED AS NECESSARY."
910 VTAB 16: HTAB 8: PRINT "SHAPE # TO BE MOVED";: HTAB 30: INPUT SN: IF SN > PEEK(TA) THEN 910
915 IF SN <1 THEN 200
920 PRINT : HTAB 8: PRINT "PUT SHAPE #";SN;" AFTER # ";: INPUT SO
1200 HOME : VTAB 4: HTAB 17: FLASH : PRINT " WARNING ": NORMAL : PRINT : PRINT "IF YOU DELETE 1 OR MORE SHAPES, ALL THE": PRINT : PRINT "SHAPES AFTER IT/THEM IN THE TABLE, WILL"
1205 PRINT : PRINT "BE RENUMBERED. PROGRAMS USING THEM MUST": PRINT : HTAB 8: PRINT "BE ADJUSTED AS NECESSARY."
1210 VTAB 16: PRINT "WHICH SHAPE NUMBER IS TO BE DELETED ?": PRINT : HTAB 8: PRINT "<0> IF NONE";: HTAB 30: INPUT SN
1215 IF SN = 0 THEN 200
1220 IF SN <1 OR SN > PEEK(TA) THEN 1210
1225 HCOLOR= 3: GOSUB 2000: VTAB 21: HTAB 15: PRINT "SHAPE NO. ";SN: PRINT : PRINT "IS THIS THE SHAPE TO BE DELETED <Y/N> ?";
1230 VTAB 23: HTAB 40: GET A$: IF A$ = "Y" THEN 1240
1330 VTAB 14: PRINT " TABLE HAS NOW BEEN SAVED AND NAMED:"
1335 VTAB 16: HTAB (38 - LEN(N$)): PRINT N$
1340 VTAB 18: PRINT " LENGTH OF THIS TABLE IS:";: HTAB (32 - LEN( STR$(L))): PRINT L;" BYTES"
1345 VTAB 24: HTAB 11: INVERSE : PRINT " ANY KEY TO CONTINUE ";: NORMAL
1350 A = PEEK( -16384): IF A >127 THEN POKE -16368,0: GOTO 1360
1355 GOTO 1350
1360 HOME : VTAB 7: HTAB 10: PRINT "CHOOSE ONE BY NUMBER :-": POKE 32,4: VTAB 11: PRINT "1 ---> MAKE OR EDIT ANOTHER TABLE": PRINT : PRINT "2 ---> USE 'SG.CONVERTER'": PRINT : PRINT "3 ---> EXIT PROGRAM"
1365 A = PEEK( -16384): IF A >127 THEN 1375
1370 GOTO 1365
1375 A = A -176: IF A <1 OR A >3 THEN 1365
1380 POKE -16368,0: IF A = 3 THEN END
1385 IF A = 2 THEN PRINT D$;"RUN SG.CONVERTER"
1390 GOTO 30
1400 HOME : POKE 32,7: VTAB 4: PRINT "HOW MANY MORE SHAPES?": PRINT : PRINT "USE '-' SIGN FOR REDUCTION":SN = PEEK(TA): VTAB 4: HTAB 25: INPUT T
1405 IF T <SN -N THEN 1430
1410 IF (N +T) <256 THEN 1440
1415 POKE 32,2: VTAB 7: PRINT "MAX. NUMBER IS 255; DO YOU WANT TO:": POKE 32,6: PRINT : PRINT "- INCREASE SIZE TO 255 <Y>": PRINT : PRINT "- LEAVE AT PRESENT SIZE <N> ";: GET A$
1420 IF A$ = "Y" THEN T = 255 -N: GOTO 1440
1425 GOTO 200
1430 PRINT : VTAB 9: PRINT "THAT WILL DESTROY THE LAST": PRINT : PRINT (SN -N -T);: HTAB 4: PRINT "SHAPES OF THE TABLE! IS": PRINT : PRINT "THAT WHAT YOU WANT <Y/N> ?";: HTAB 26: GET A$: IF A$ = "Y" THEN POKE TA,(N +T): GOTO 1440
1505 VTAB 22: HTAB 1: PRINT "WHICH SIDE TO BE INCREASED? <I/J/K/M>";: HTAB 40: GET A$
1510 IF A$ = "I" THEN 1535
1515 IF A$ = "M" THEN 1545
1520 IF A$ = "J" THEN 1555
1525 IF A$ = "K" THEN 1565
1530 GOTO 1505
1535 V = V +1: IF V >15 THEN V = V -1: GOTO 1575
1540 FOR I = XH TO XH +H *10 STEP 10: HPLOT I,(YV -V *10): NEXT : GOTO 1580
1545 V = V +1: IF V >15 THEN V = V -1: GOTO 1575
1550 SY = SY +1:YV = YV +10: FOR I = XH TO XH +H *10 STEP 10: HPLOT I,YV: NEXT : GOTO 1580
1555 H = H +1: IF H >25 THEN H = H -1: GOTO 1575
1560 SX = SX +1:XH = XH -10: FOR I = YV TO (YV -V *10) STEP -10: HPLOT XH,I: NEXT : GOTO 1580
1565 H = H +1: IF H >25 THEN H = H -1: GOTO 1575
1570 FOR I = YV TO YV -V *10 STEP -10: HPLOT (XH +H *10),I: NEXT : GOTO 1580
1575 VTAB 24: PRINT "MAX GRID IS 25*15 - NO INCREASE THAT WAY";: FOR I = 1 TO 2500: NEXT I: VTAB 23: CALL -958
1580 VTAB 21: CALL -958: PRINT : PRINT "ANY MORE INCREASE?";: HTAB 40: GET A$
1585 IF A$ = "Y" THEN VTAB 21: CALL -958: GOTO 1505
1590 HCOLOR= 3: HOME : GOSUB 1930: RETURN
1600 HCOLOR= 6: IF E > -1 THEN HGR : REM DRAW BLUE GRID
1605 XH = (14 - INT(H/2)) *10:YV = 80 + INT(V/2) *10: FOR X = XH TO XH +(H *10) STEP 10: FOR Y = YV TO (YV -V *10) STEP -10: HPLOT X,Y: NEXT Y,X
1610 RETURN
1650 HOME : POKE -16303,0: VTAB 4: PRINT " WHEN YOU TOUCH ANY KEY YOU WILL SEE": PRINT : PRINT " 4 REAL-SIZE PLOTS OF THE SHAPE JUST": PRINT : PRINT " DRAWN :-"
1655 POKE 32,5: PRINT : PRINT "1 & 2 USE COLOURS 1, 2, 3": PRINT : PRINT "3 & 4 USE COLOURS 5, 6, 7": PRINT : PRINT "1 & 3 HAVE START ON ODD NUMBER": PRINT : PRINT "2 & 4 HAVE START ON EVEN": POKE 32,0
1660 PRINT : PRINT : PRINT " AFTER REVIEWING TOUCH ANY KEY AGAIN": PRINT : PRINT " TO CONTINUE."
1665 HCOLOR= 0: FOR I = 160 TO 191: HPLOT 1,I TO 279,I: NEXT I: POKE 233,64
1670 HCOLOR= 7: DRAW SN AT 180,175: DRAW SN AT 221,175
1675 HCOLOR= 3: DRAW SN AT 50,175: DRAW SN AT 91,175
2300 FOR I = (TA +2 *(SN +1)) TO (TA +2 *( PEEK(TA) +1)) STEP 2
2305 A = PEEK(I) +T
2310 IF A >255 THEN POKE (I +1),( PEEK(I +1) +1):A = A -256: GOTO 2310
2315 IF A <0 THEN POKE (I +1),( PEEK(I +1) -1):A = A +256: GOTO 2315
2320 POKE I,A: NEXT I
2325 RETURN
2400 REM UNPLOT ROUTINE
2405 IF P = 4 AND M = -1 THEN 2445
2410 P = 0:SA = SA -1: IF SA = 23455 THEN M = -1:SA = SA +1: RETURN
2415 M = PEEK(SA): IF M >3 THEN P = 4:M = M -4
2420 IF M = 0 THEN Y = Y +10
2425 IF M = 1 THEN X = X -10
2430 IF M = 2 THEN Y = Y -10
2435 IF M = 3 THEN X = X +10
2440 IF E >0 THEN 2450
2445 IF P = 4 THEN HCOLOR= 0: DRAW 2 AT X,Y: HCOLOR= 3: DRAW 4 AT X,Y
2450 P = 0:M = -1: RETURN
2500 REM INTERNAL SHAPE ROUTINE
2505 POKE 232,0: POKE 233,3
2510 FOR I = 768 TO 846
2515 READ J: POKE I,J: NEXT
2520 RESTORE : RETURN
2525 DATA 04,00,10,00,16,00,42,00,60,00,39,45,54,63,04,00,63,39,45,45,37,63,63,39,45,45,45,54,54,54,39,36,55,54,63,63,44,45,60,63,04,00,35,36,31,54,54,54,13,36,13,36,36,13,54,54,54,31,36,00,219,36,108,13,13,54,54,54,31,31,31,36,04,00